package com.freeman.cement.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.freeman.cement.myenum.EventLvl;
import com.freeman.cement.myenum.SubType;
import com.freeman.cement.myenum.Subed;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.Optional;

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("eventcatlog")
public class EventType {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 事件名称
     */
    //！！！ 特别注意，因为数据库没有使用规范的下划线_的字段命名方式，所以这里必须写明，这里数据库字段最好写为"event_name"，这样mybatis-plus会自动做驼峰转换 ！！！
    @TableField("eventName")
    private String eventName;
    /**
     * 事件类型码
     */
    @TableField("eventType")
    private String eventType;
    /**
    * 需要返回海康平台的实际订阅结果，目前返回“已调用”，仅供调试使用
    */
    //@TableField(exist = false)
    //private String eventSubStatus = "未订阅";
    /**
     * 事件等级
     */
    @TableField("eventLvl")
    private Integer eventLvl;
    /**
     * 事件等级名
     */
    @TableField(exist = false)
    private String eventLvlName;
    /**
     * 订阅类型
     */
    @TableField("subType")
    private Integer subType;
    /**
     * 订阅类型名
     */
    @TableField(exist = false)
    private String subTypeName;
    /**
     * 备注
     */
    @TableField("memo")
    private String memo;
    /**
     * 是否被订阅
     */
    @TableField("isSubed")
    private Integer isSubed;
    /**
     * 是否被订阅名称
     */
    @TableField(exist = false)
    private String isSubedName;

    public String getSubTypeName() {
        if(subType != null) {
            for (SubType s : SubType.values()) {
                if (s.getIndex() == subType) {
                    return subTypeName = s.getName();
                }
            }
        }
        return null;
    }

    public String getIsSubedName(){
        if(isSubed != null) {
            for (Subed s : Subed.values()) {
                if (s.getIndex() == isSubed) {
                    return isSubedName = s.getName();
                }
            }
        }
        return null;
    }

    public String getEventLvlName(){
        if(eventLvl != null) {
            for (EventLvl e : EventLvl.values()) {
                if (e.getIndex() == eventLvl) {
                    return eventLvlName = e.getName();
                }
            }
        }
        return null;
    }

}
